import express from "express";
import VideoData from "./model.js";
import auth from "../token/auth.js";
import User from "../user/model.js";

const router = express.Router();

// 创建
router.post("/", auth, async (req, res) => {
  const { operatorId, ...fields } = req.body;
  if (!operatorId) {
    return res.status(400).json({ error: "缺少操作者id" });
  }
  const operator = await User.findById(operatorId);
  if (!operator || !["社长", "管理员"].includes(operator.position)) {
    return res.status(403).json({ error: "只有社长或管理员可以创建数据" });
  }
  try {
    const video = await VideoData.create(fields);
    res.status(201).json(video);
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});

// 查询全部
router.get("/", async (req, res) => {
  try {
    const list = await VideoData.find();
    res.json(list);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// 查询单个
router.get("/:id", async (req, res) => {
  try {
    const video = await VideoData.findById(req.params.id);
    if (!video) return res.status(404).json({ error: "未找到" });
    res.json(video);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// 更新
router.put("/:id", auth, async (req, res) => {
  const { operatorId, ...fields } = req.body;
  if (!operatorId) {
    return res.status(400).json({ error: "缺少操作者id" });
  }
  const operator = await User.findById(operatorId);
  if (!operator || !["社长", "管理员"].includes(operator.position)) {
    return res.status(403).json({ error: "只有社长或管理员可以修改数据" });
  }
  try {
    const video = await VideoData.findByIdAndUpdate(req.params.id, fields, {
      new: true,
    });
    if (!video) return res.status(404).json({ error: "未找到" });
    res.json({ message: "更新成功", video });
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});

// 删除
router.delete("/:id", auth, async (req, res) => {
  const { operatorId } = req.body;
  if (!operatorId) {
    return res.status(400).json({ error: "缺少操作者id" });
  }
  const operator = await User.findById(operatorId);
  if (!operator || !["社长", "管理员"].includes(operator.position)) {
    return res.status(403).json({ error: "只有社长或管理员可以删除数据" });
  }
  try {
    const video = await VideoData.findByIdAndDelete(req.params.id);
    if (!video) return res.status(404).json({ error: "未找到" });
    res.json({ message: "删除成功" });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

export default router;
